home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / turbovis / tvtool17.zip / ACTLIB.ZIP / TOOLS.ZIP / FILEDEL.C < prev    next >
C/C++ Source or Header  |  1993-07-30  |  2KB  |  70 lines

  1. /*  Copyright (C) 1993   Marc Stern  (internet: stern@mble.philips.be)  */
  2.  
  3. #include "tools.h"
  4. #include <dos.h>
  5. #include <direct.h>
  6. #include <stdlib.h>
  7. #include <ctype.h>
  8. #include <string.h>
  9.  
  10. /*
  11.  * Functions    : filedel
  12.  *
  13.  * Description  : Like 'unlink' but allows wildcards
  14.  *
  15.  * Remarks      : Change to target directory to delete files
  16.  *                and come back to current one.
  17.  *
  18.  * Return       :  none
  19.  *
  20.  */
  21.  
  22. void filedel( const char *filename )
  23. {
  24.  struct fcb Fcb;
  25.  void far *pFcb = &Fcb;
  26.  union REGS regs;
  27.  struct SREGS sregs;
  28.  char *ptr1, *ptr2;
  29.  char curdir[_MAX_PATH];
  30.  
  31.  strcpy( curdir, " :/" );
  32.  
  33.  if ( filename[1] == ':' ) Fcb.fcb_drive = toupper( *filename ) - 'A' + 1;
  34.                       else Fcb.fcb_drive = getdisk();
  35.  
  36.  ptr1 = max( strrchr(filename, '\\'), strrchr(filename, '/') );
  37.  
  38.  if ( ptr1 ) 
  39.     {
  40.      int result;
  41.      char tmp;
  42.      *curdir = Fcb.fcb_drive + 'A' - 1;
  43.      getcurdir( Fcb.fcb_drive, curdir + 3 );
  44.      tmp = *++ptr1;
  45.      *ptr1 = '\0';
  46.      result = chdir( filename );
  47.      *ptr1 = tmp;
  48.      if ( result ) return;
  49.     }
  50.  
  51.  memset( Fcb.fcb_name, ' ', 11 );
  52.  ptr2 = Fcb.fcb_name;
  53.  while ( *ptr1 && (*ptr1 != '.') ) *ptr2++ = *ptr1++;
  54.  ptr2 = Fcb.fcb_ext;
  55.  if ( *ptr1++ )
  56.     while ( *ptr1 ) *ptr2++ = *ptr1++;
  57.  
  58.  /*
  59.    DOS Interrupt 13H
  60.    Input:  DS:DX = pointer to fcb
  61.  */
  62.  
  63.  sregs.ds  = FP_SEG( pFcb );
  64.  regs.x.dx = FP_OFF( pFcb );
  65.  regs.h.ah = 0x13;
  66.  intdosx( ®s, ®s, &sregs );
  67.  
  68.  if ( *curdir != ' ' ) chdir( curdir );
  69. }
  70.